//
//  BABaseViewController.swift
//  BAweibo
//
//  Created by baggio on 2017/8/4.
//  Copyright © 2017年 baggio. All rights reserved.
//

//4个 tab 页的访客视图的基类

import UIKit

class BABaseViewController: UIViewController {
    
    //登录则显示tableView，未登录则显示访客视图
    //var isLogin:Bool=!false 等号两边都没空格会出错
//    var isLogin:Bool = false //一开始 先写死 false
    //使用 BAOAuthViewModel 中的 isLogin 属性（或 !isAccessTokenExpired）
//    var isLogin:Bool = !BAOAuthViewModel.share.isAccessTokenExpired
    var isLogin:Bool=BAOAuthViewModel.share.isLogin
    
    //访客视图
    var visitorView:BAVisitorView?
    
    //自己创建视图 方法一
    override func loadView() {
        if !isLogin{
            //设置访客视图
            setUpVisitorView()
        } else {
            //系统帮我们创建视图，白色界面
//            super.loadView()
            //后面改成 tableView
            view = tableView
        }
    }
    
    private func setUpVisitorView(){
        //设置导航栏左右角
        setUpNav()
        
        visitorView=BAVisitorView()
        
        //02实例化闭包
        visitorView?.closure={[weak self] in
            //04闭包回调
//            self.loginClick()
            //CZBaseViewController->visitorView，visitorView->closure，closure->CZBaseViewController，形成了循环引用（闭包里面用到 self），所以要 [weak self] in
            self?.loginClick()
        }
        view=visitorView //自己创建视图，这种方式创建，不需要用设定这个 view 的 frame 大小，默认跟控制器一样大
    }
    
    private func setUpNav(){
        navigationItem.leftBarButtonItem=UIBarButtonItem(title: "注册", imgName: nil, target: self, action: #selector(loginClick))
        navigationItem.rightBarButtonItem=UIBarButtonItem(title: "登录", imgName: nil, target: self, action: #selector(loginClick))
    }
    
    //注册、登录 做一样的事
    @objc private func loginClick(){
        
        print("点击注册、登录按钮")
        
        let oAuthVc=BAOAuthViewController()
        let nav=BANavigationController(rootViewController: oAuthVc)
        
        //以模态方式弹出控制器
        self.present(nav, animated: true, completion: nil)
        
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //自己创建视图 方法二（在这个控制器中添加子控件），这种方式创建，需要设定 frame 的大小 和 约束
        //view.addSubview(BAVisitorView(frame: <#T##CGRect#>))
    }
    
    lazy var tableView: UITableView = UITableView()

}
